package concoursbelote;

/**
 * 
 * @author Guillaume
 *
 */
public abstract class Humains 
{
	//*********************************************************
	//			ATTRIBUTS
	//*********************************************************
	private String prenom;
	private String surnom;
	private double porteMonnaie;
	private double coteDePopularite;
	private String criSignificatif;
	
	
	//*********************************************************
	//			CONSTRUCTEURS
	//*********************************************************
	
	/**
	 * Permet de construire un humain
	 * @author Guillaume
	 * @param prenom
	 */
	public Humains(String prenom) 
	{
		this.prenom = prenom;
	}

	/**
	 * Permet de construire un haumain à partir de son prénom et de son sunrnom en utilisant le constructeur précédent
	 * @author Guillaume
	 * @param prenom
	 * @param surnom
	 */
	public Humains(String prenom, String surnom) 
	{
		this(prenom);
		this.surnom = surnom;
	}

	/**
	 * Permet de construire un haumain à partir de son prénom, de son sunrnom et de son porte-monnaie en utilisant le constructeur précédent
	 * @author Guillaume
	 * @param prenom
	 * @param surnom
	 * @param porteMonnaie
	 */
	public Humains(String prenom, String surnom, double porteMonnaie) 
	{
		this(prenom, surnom);
		this.porteMonnaie = porteMonnaie;
	}

	/**
	 * Permet de construire un haumain à partir de son prénom, de son sunrnom, de son porte-monnaie et de sa cote de popularité
	 * en utilisant le constructeur précédent
	 * @author Guillaume
	 * @param prenom
	 * @param surnom
	 * @param porteMonnaie
	 * @param coteDePopularite
	 */
	public Humains(String prenom, String surnom, double porteMonnaie, double coteDePopularite) 
	{
		this(prenom, surnom, porteMonnaie);
		this.coteDePopularite = coteDePopularite;
	}

	/**
	 * Permet de construire un haumain à partir de son prénom, de son sunrnom, de son porte-monnaie, de sa cote de popularité, et de son cri
	 * en utilisant le constructeur précédent
	 * @author Guillaume
	 * @param prenom
	 * @param surnom
	 * @param porteMonnaie
	 * @param coteDePopularite
	 * @param criSignificatif
	 */
	public Humains(String prenom, String surnom, double porteMonnaie, double coteDePopularite, String criSignificatif) 
	{
		this(prenom, surnom, porteMonnaie, coteDePopularite);
		this.criSignificatif = criSignificatif;
	}

	//*********************************************************
	//			GETTEURS
	//*********************************************************
	public String getPrenom() 
	{
		return prenom;
	}
	
	public String getSurnom() 
	{
		return surnom;
	}
	public double getPorteMonnaie() 
	{
		return porteMonnaie;
	}
	public double getCoteDePopularite() 
	{
		return coteDePopularite;
	}
	public String getCriSignificatif() 
	{
		return criSignificatif;
	}
	
	
	//*********************************************************
	//			SETTEURS
	//*********************************************************
	public void setSurnom(String surnom) 
	{
		this.surnom = surnom;
	}
	public void setPorteMonnaie(double porteMonnaie) 
	{
		this.porteMonnaie = porteMonnaie;
	}
	public void setCoteDePopularite(double coteDePopularite) 
	{
		this.coteDePopularite = coteDePopularite;
	}
	
	//*********************************************************
	//			METHODS
	//*********************************************************
	
	public abstract void offrirUneTournee(int indexClient);
	public abstract void refuserUnVerre(int indexServeur);

	/**
	 * Permet à n'importe quel humain de parler pour remercier de lui avoir offert un verre
	 * @author Shehu
	 */
	public void parler()
	{
		System.out.println("Merci pour ce verre");
	}
	
	/**
	 * Affiche un message à l'écran lorsque l'humain boit son verre
	 * @author Guillaume
	 */
	public void boire()
	{
		System.out.println("A la vôtre!");
	}
	
	/**
	 * Permet de payer la boisson acheté ou la tournée générale
	 * @author Guillaume
	 * @param prix
	 * @param index_bar
	 * @param indexClient
	 */
	public boolean payer(double prix, int indexClient)
	{
		boolean paye = false;
		if((Administration.currentBar.clients.get(indexClient).getPorteMonnaie() - prix) <= 0)
		{
			paye = Erreur.impossibleDePayer(indexClient);
		}
		else
		{
			Administration.currentBar.clients.get(indexClient).setPorteMonnaie(Administration.currentBar.clients.get(indexClient).getPorteMonnaie() - prix);
		}
		return paye;
	}
	
	public void sePresenter()
	{
	}

	/**
	 * Permet à n'importe quel humain d'offrir un verre aux autres
	 * @author Shehu
	 */
	public void offrirUnVerre() 
	{
		// TODO Auto-generated method stub
		System.out.println("Je t'offre un verre");
	}

}
